/**
 * Copyright (c) 2010, "Shashank Tiwari"
 * web: www.shanky.org | www.treasuryofideas.com
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *   * Redistributions in binary form must reproduce the above
 *     copyright notice, this list of conditions and the following 
 *     disclaimer in the documentation and/or other materials provided 
 *     with the distribution.
 *   * Neither the name of the fireclay-core project nor the names of its
 *     contributors may be used to endorse or promote products derived 
 *     from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 * Created: Jun 5, 2010
 */

package fireclay.logging.targets
{
	import mx.logging.targets.LineFormattedTarget;
	import mx.logging.LogEventLevel;
	import fireclay.logging.targets.firebug.FirebugLogLevel;
	import mx.logging.LogEvent;
	import flash.external.ExternalInterface;
	
	public class FirebugTarget extends mx.logging.targets.LineFormattedTarget
	{
		private var logLevelMap:Object;
		
		public function FirebugTarget()
		{
			super();
			initLogLevelMap();
		}
		
		private function initLogLevelMap():void
		{
			logLevelMap = new Object();
			logLevelMap[LogEventLevel.ALL] = FirebugLogLevel.LOG;
			logLevelMap[LogEventLevel.DEBUG] = FirebugLogLevel.DEBUG;
			logLevelMap[LogEventLevel.INFO] = FirebugLogLevel.INFO;
			logLevelMap[LogEventLevel.WARN] = FirebugLogLevel.WARN;
			logLevelMap[LogEventLevel.ERROR] = FirebugLogLevel.ERROR;
			logLevelMap[LogEventLevel.FATAL] = FirebugLogLevel.ERROR;
		}
		
		public override function logEvent(event:LogEvent):void
		{
			super.logEvent(event);
			if(ExternalInterface.available) 
			{
				ExternalInterface.call(logLevelMap[event.level], event.message);	
			}
			
		}
	}
}